package prototipo;

public class Robot {

	protected Grilla g;
	protected int Puntaje,Combustible,Direccion,fila,col;
	
	public Robot(Grilla gri){
		g=gri;
		Puntaje=0;
		Combustible=500;
		Direccion=1;
		int[] inicio=gri.getInicio();
		fila=inicio[0];
		col=inicio[1];
	}
	public int getPuntaje(){
		return Puntaje;
	}
	public int getCombustible(){
		return Combustible;
	}
	public int getFila(){
		return fila;
	}
	public int getCol(){
		return col;
	}
	public int getDireccion(){
		return Direccion;
	}
	public void rotar(int e){
		Combustible--;
		if (e==1) {
			Direccion=(Direccion+1)%4;
		}
		else {
			if (Direccion==0) Direccion=3;
			else Direccion=Direccion-1;
		}
	}
	private void mover(){
		switch (Direccion){
		case 0: fila=fila-1;break;
		case 1: col=col+1;break;
		case 2: fila=fila+1;break;
		case 3: col=col-1;break;
		}
	}
	public void avanzar(){
		Celda c=null;
		switch (Direccion){
		case 0: c=g.getCelda(fila-1, col);break;
		case 1: c=g.getCelda(fila, col+1);break;
		case 2: c=g.getCelda(fila+1, col);break;
		case 3: c=g.getCelda(fila, col-1);break;
		}
		
		if (c!=null){ 
			Objeto o=c.getObjeto();
			switch (c.getTipo()){
				case 0: { if(o==null)  {
										Combustible=Combustible-2;
									    mover();
										}				
						  else {
							  switch (o.getTipo()){
							  case 2: {
								       Combustible=Combustible-2;
								       mover();
								       Combustible+=100;
								       if (Combustible>500) Combustible=500;
								       g.setCelda(fila, col, c.getTipo(), -1);
							  };break;
							  case 4: {
								  	  Combustible=Combustible-2;
								  	  mover();
								  	  Puntaje+=100;
								  	  g.setCelda(fila, col, c.getTipo(), -1);
							  };break;
							  case 5: {};break;
							  case 6: {};break;
							  case 7: {};break;
							  case 8: {};break;
							  }
							  
						  }
				
			
				};break;
				case 1:{ if(o==null)  {
									   Combustible=Combustible-1;
									   mover();
									  }				
						 else {
							 switch (o.getTipo()){
							 case 2: {
								 	  Combustible=Combustible-1;
								 	  mover();
								 	  Combustible+=100;
								 	  if (Combustible>500) Combustible=500;
								 	  g.setCelda(fila, col, c.getTipo(), -1);
							 };break;
							 case 4: {
								 	  Combustible=Combustible-1;
								 	  mover();
								 	  Puntaje+=100;
								 	  g.setCelda(fila, col, c.getTipo(), -1);
							 };break;
							 case 5: {};break;
							 case 6: {};break;
							 case 7: {};break;
							 case 8: {};break;
							  }	
						 }
				};break;
				case 2:
				case 3: break;
		}
		}
	}	
	
}
